home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 April
/
CHIP 1996 aprilis (CD06).zip
/
CHIP_CD06.ISO
/
hypertxt.arj
/
9502
/
WORM.CD
< prev
next >
Wrap
Text File
|
1995-11-15
|
14KB
|
224 lines
@VAz Internet Worm kirándulása@N
@VTámadás az Internet ellen@N
Az alábbiakban nem hagyományos fertôzô betegségekrôl
lesz szó, de mégis a vírusok témakörébe sorolható az
Internet elleni támadás. 1988 november 2-án az addig ismert
legnagyobb mértékû támadás érte az Internetet, a hálózatok
hálózatát. A támadás a BSD Unixnak és leszármazottainak
néhány hibáján alapult, ám ezek az apró hibák tragikusnak
bizonyultak több ezer, a hálózatra kapcsolt rendszer
számára.
@VA Féreg megjelenik@N
Az Internet Worm (továbbiakban Féreg) jelenléte elôször
november másodikán a kora esti órákban tûnt fel a Hálózaton
dolgozóknak. Azokon a gépeken, ahol megjelent, rejtélyes
file-ok tûntek fel az átmeneti file-ok között (/USR/TMP),
furcsa bejegyzéseket rögzítettek a naplófile-ok, és
lecsökkent a rendszerek teljesítménye. Ezt az okozta, hogy a
fertôzött gépek egyre növekvô számban futtatták a Férget,
mert a program elsôdleges célja a szaporodás volt. Néhány
gépen a túlterhelés teljes rendszerleálláshoz vezetett,
amikor elfogyott a szabad swap-terület vagy a processzek
száma meghaladta a kritikus darabszámot. Több helyen már a
rendszerfelügyelôk belépése sem járt sikerrel, mivel az
erôforrások foglaltsága miatt nem jutott rájuk elegendô idô.
Az értetlenséget hamar felváltotta a Féreg elleni szervezett
fellépés. Elsôként a Berkeley Egyetemen és az MIT-n sikerült
egy-egy példányt ""elfogni", noha a program ennek
megakadályozására több kísérletet tett. A mûködés részleges
megismerése után az elsô védelmi intézkedések meglepôek
voltak: a MAIL-hez készített úgynevezett ""foltokon" (patch)
kívül a C-fordítók átnevezése is szükségessé vált. Ez az
információ azonban nem juthatott el mindenhová: több helyen
lekapcsolták az összes Internet-csatlakozást, hogy
elszigeteljék gépeiket a Hálózattól. Rövid idôn belül
elkészült a végleges Féreg-ellenes csomag: a Féreg által
kiaknázott hibák mindegyikéhez elkészült a ""folt". Ezek
után már nem maradt más hátra, mint a fertôzések egyenkénti
felszámolása.
@VA Worm mûködése@N
A Féreg @Knem vírus@N, noha több forrás így nevezi meg. A
vírusok más programokat fertôznek meg, és azok révén
indulnak el. A ""worm" férget jelent, a férgek pedig
önmagukban is futóképes programok, céljuk a megfertôzött
rendszerek erôforrásainak minél nagyobb mértékû kihasználása
mások rovására. A Féreg mindent egyedül csinált, így egy
vírusnál nagyobb kár okozására volt képes (hiszen nem
kellett megosztania processzoridejét a gazdaprogrammal). A
károkozás nem terjedt ki a napjainkban ""mindennapos"
lemezformázásra, törlésre stb., bár ezt megtehette volna. Az
is károkozás azonban, amikor az egyes felhasználók nevében
disznóságokat csinál valaki. Az idegen gépekre kerülés egyik
lehetôsége a FINGER daemon volt. E (jóindulatú) daemon
feladata a gép felhasználóiról információt nyújtani az
érdeklôdôknek. A Féreg kihasználta a Finger egyik hibáját: a
daemon nem ellenôrizte saját stackjének túlcsordulását. Az
idegen gépekhez a Worm olyan, erre a célra szerkesztett
kérelemmel (request packet) fordult, amely felborította az
ottani finger belsejét, és az a kérés kiszolgálása után a
Féreg által meghatározott állapotba került. Ez pedig
elindította azt a kódot, amely ""áthúzta" a Féreg egy
példányát az idegen gépre. A másik fô támadási felület a
MAIL, a gépek közötti levelezést kezelô daemon. Ez a 25-ös
TCP portot figyeli, mivel innen szedi az Internet
protokollok szerinti levélforgalmat. Külsô üzenet
beérkezésekor a daemon kapcsolatba lép hívójával, ekkor
""megtárgyalják" a levélre vonatkozó információkat. Sajnos a
BSD Unixban szinte mindenhol engedélyezték a DEBUG
lehetôséget a MAIL daemon számára. E lehetôség a fejlesztés
során tesztelési feladatokat látott el, és rajta keresztül
olyan parancsokhoz lehetett hozzáférni, amelyeket a MAIL-nek
nem kellett volna ismernie. A DEBUG ajánlottan
kikapcsolandó, ha egy rendszert konfigurálnak, ám ez a
legtöbb gépen különbözô okokból elmaradt. Gyakorlatilag
tehát a Féreg a MAIL olyan kiskapuját használta ki, amely
nagyon sok helyen elérhetô volt, sok rendszerfelügyelô
számára ismeretlenül. A Féreg támadásának harmadik módja a
felhasználók jelszavának feltörése volt. Itt a Unix azon
sajátosságáról van szó, hogy a felhasználói információk (a
nevek és a kódolt jelszavak) egy mindenki számára olvasható
helyen tárolódnak. (Kivétel ez alól a SHADOW PASSWORD, ahol
a kódolt jelszó már nem publikus.) Noha a Unix
jelszókódolása nem visszafordítható, a kódolt jelszó és a
kódolási eljárás ismeretében találgatással meg lehet
kísérelni a nyílt szöveg helyreállítását. E célra a Féreg
tartalmazott egy olyan rutint, amely elvégezte a kódolást
(CRYPT), ám egy nagyságrenddel gyorsabban, mint a BSD Unix
saját CRYPT-je. A felhasználók jelszavára maga a Féreg a név
alapján tett kísérleteket, majd felhasználta az erre a célra
magával hordozott 432 szavas kisszótárt. Ez a szótár
valószínûleg a fejlesztôk gyûjtômunkájának eredménye,
állítólag az akkori viszonyok között meglepôen jó találati
aránnyal volt használható... A fenti módszerek csak akkor
mûködnek, ha a felhasználói jelszavak valamilyen módon
kikövetkeztethetôk a felhasználó nyilvános információiból.
Ez a gyakorlat tehát kerülendô. (E sorok írója például 14-15
jegyû számokat szokott jelszóként használni, egy-egy betûvel
kiegészítve. A szám, a betû helye és a betû rövid
idôközönként változik.) A megszerzett jelszavakkal a Féreg
más gépekre próbált bejutni. A felhasználók lustasága miatt
ugyanis az egyik gépen érvényes jelszóval a többi gépen --
ahol az adott felhasználó rendelkezik accounttal -- is lehet
próbálkozni. E kapcsolatokat a Féreg például a levelezést
átirányító file-okból tudta meg.
A fertôzési kísérleteken kívül a Féreg sokoldalú álcázó
tevékenységet végzett. Alapvetô volt például a futó
példányok szétágaztatása (fork), majd a szülô kiirtása. Az
ütemezô ugyanis csökkenti a régóta futó taszkok prioritását,
így az ismétlôdô ""reinkarnáció" törölte az elôéletet,
ezáltal értékes idôhöz juttatta a férget. A frissítés másik
elônye, hogy semmilyen processz nem halmozott fel gyanúsan
sok elfoglalt processzoridôt, s állandóan változott a futó
folyamatok azonosítója -- emiatt aztán nehezebbé vált a gép
foglaltságának követése. A Féreg processzei egyébként
egyszerû burok (shell) folyamatok, a frissen fertôzött gépre
kerülés kivételével, amikor rövid ideig egy véletlenszerû
betû- és számsorozat a folyamat neve. Az idegen gépekre
csatlakozott Féreg egy rövid szövegfile-t küldött át, amely
felkészítette az idegen gépet a fôprogram fogadására. Ezután
az anya gépérôl átkerült a Féreg több hardverkörnyezetbe
fordított bináris változata és a file-átvitelt végzô program
forráskódja. Mivel az áthúzó programot az idegen gépre
forráskóddal juttatták át, elindítása elôtt meg kellett
hívni a C fordítót. (Ezért járt sikerrel a fordító
átnevezése a fertôzés megakadályozására.) Az átvitelt az
anya több ponton ellenôrizte. Miután összeállt a futásra
kész Féreg a célgépen, lebontotta az anyagép felôli
kapcsolatait, s megkezdte a frissen elfoglalt rendszer
hálózati kapcsolatainak felderítését. Az így felépített
listát véletlenszerûen permutálva az új példány megkezdte az
elérhetô gépek típusának azonosítását, kiválogatva a
fertôzésre alkalmasakat. Az elôkészítés után a Féreg
megkezdte a jelszavak feltörését, ezzel párhuzamosan
nekiállt a hálózati kapcsolatlista vizsgálatának (azaz a
fertôzésnek).
@VA Féreg védelme@N
Mivel a programot arra készítették fel, hogy egy idô
után ellenséges környezetben üzemeljen (értsd:
irtóhadjáratot folytatnak ellene), néhány olyan trükköt is
alkalmazott, amely visszafejtése és késôbb kiirtása
megnehezítését szolgálta. Nyilvánvaló ugyanis, hogy a
kezdeti idôszakban nem kell számottevô ellenlépésekre
felkészülni, a veszély felismerése után azonban megkezdôdik
a betolakodó eltávolítása. Az elsô szakaszban tehát a
feltûnés teljes elkerülése a cél, ezután pedig a minél
szívósabb ellenállás. A felderítés elleni védelem több módon
nyilvánult meg: több helyen szüneteket építettek a kódba,
így viszonylag kis mennyiségû Féreg jelenléte nem terhelte
túl a fertôzött rendszert. E trükk a szaporodást is
lassította. Ugyancsak a túl gyors terjedés megakadályozását
szolgálta az azonos gépen üzemelô Férgek kommunikációja:
véletlenszerûen kikapcsolási parancsokat adtak egymásnak.
(Ez azonban úgy ment végbe, hogy legalább egy egyed életben
maradjon az adott gépen.) Itt szintén a darabszám
korlátozása volt a cél. A halálra ítélt példányok csak akkor
követtek el öngyilkosságot, ha már ""elég" sokat dolgoztak a
jelszavak feltörésén. A Féreg felkészült a memória teljes
lementése (core dump) ellen is. Elsô lépésként sok mindent
titkosítva tárolt magában, így a kimentett memóriatartalom
elemzése nem volt egyszerû. ""Normális" körülmények között
még a core dump kivitelezése sem sikerült. Szintén a Féreg
védelmére szolgált, hogy a más gépekre áthúzó program
mûködését folytonosan felügyelte. A hibák kiszûrésén kívül
gyanús helyzetekben azonnal leállt az átvitel,
megsemmisültek a már átvitt adatok, majd lebomlott a
kapcsolat. Ezzel a Féreg megakadályozta, hogy egy idegen
géprôl sikeres kapcsolatfelvételt szimulálva átcsalogassák
oda a teljes kódot (vagyis foglyot ejtsenek). A sikerességi
feltételek között szerepelt ugyanis néhány olyan idôzítés
is, amit az idegen gépen várakozó féreggyilkos EMBER
képtelen véghezvinni, ha nem ismeri a Féreg belsô
felépítését. A felderítés fázisára -- azaz amikor a Féreg
túllépett egy bizonyos darabszámot -- vált dominánssá a
beleépített másik védelmi mechanizmus. A szaporodás során
ugyanis egy rögzített valószínûséggel olyan mutánsok
keletkeztek, amelyek nem reagáltak az öngyilkosságra
felszólító parancsra. Ez ahhoz vezetett, hogy a hosszú ideje
fertôzött gépeken elszaporodtak a halhatatlan példányok. Ez
lehetetlenné tette, hogy megtisztítsanak egy gépet egy olyan
tisztítóprocessz elindításával, amely öngyilkossági
parancsokkal bombázza az ott élô férgeket.
@VAmi kimaradt a Féregbôl...@N
@K(jó hírek)@N
A Féreg kódját röviddel a fertôzések után sikerült
helyreállítani. Ennek elemzése során világossá vált, hogy
nem okozott akkora kárt, mint amekkorát okozhatott volna.
Nem próbált mások adatai között turkálni, nem törölt le
semmit, nem formázott winchestereket. A kód meglehetôsen
rossz minôségû C program; sok helyen tartalmaz halott (soha
nem futó) kódot, hibás paraméterátadást és paraméter
darabszám eltérést (ez azonban két hiba találkozása miatt az
adott Unix alatt fut!), inicializálatlan változókat és
hibaellenôrzés nélküli rendszerhívásokat (például malloc). A
hibáknál talán fontosabb, hogy a Féreg nem vitte magával a
már megfejtett jelszavakat, és nem tette azokat
hozzáférhetôvé. Ez megkövetelte volna az összes érintett
rendszer minden felhasználójától, hogy azonnal jelszót
váltson, amit igen nehéz lett volna kivitelezni.
@VTanulság@N
A Féreg tündöklésének és bukásának tanulságai
jelentôsek. Sok olyan hiányosságra hívta fel a figyelmet,
ami más körülmények között nagyobb katasztrófát okozhatott
volna. A Féreg megjelenése nyilvánvalóvá tette, hogy semmi
sem biztonságos, és így hozzájárult a felhasználói morál
megváltoztatásához (többek szerint elônyére).
@K-jaws-@N